package com.hxkj.client.service;

import com.hxkj.domain.po.AuthFunction;
import com.hxkj.domain.po.FunctionLibrary;
import com.hxkj.domain.po.FunctionLibraryTree;
import com.platform.common.domain.result.ParameterDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.result.ResultPageStruct;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

/**
 * @InterfaceName FunctionLibraryServiceClient
 * @Description TODO
 * @Author Mr.zheng
 * @Date 2018/6/27 11:15
 * @Version 1.0
 */
@FeignClient(name = "cms-management")
public interface FunctionLibraryServiceClient {

    /**
     * @author Mr.zheng
     * @Description saveFunctionLibrary 新增功能
     * @Date 12:31 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.platform.common.domain.result.ResultMessageStruct>
     **/
    @RequestMapping(value = "/functionlibrary/save", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    ResultMessageStruct saveFunctionLibrary(@RequestBody FunctionLibrary functionLibrary) throws Exception;


    /**
     * @author Mr.zheng
     * @Description modifyFunctionLibrary 修改功能
     * @Date 12:54 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.platform.common.domain.result.ResultMessageStruct>
     **/
    @RequestMapping(value = "/functionlibrary/modify", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    ResultMessageStruct modifyFunctionLibrary(@RequestBody FunctionLibrary functionLibrary) throws Exception;

    /**
     * @author Mr.zheng
     * @Description getFunctionLibraryListTree 获取功能树
     * @Date 12:54 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.hxkj.domain.po.FunctionLibraryTree>
     **/
    @RequestMapping(value = "/functionlibrary/getlisttree", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    List<FunctionLibraryTree> getFunctionLibraryListTree(@RequestBody FunctionLibrary functionLibrary) throws Exception;

    /**
     * @author Mr.zheng
     * @Description getFunctionLibraryListTree 关键字搜索获取功能树
     * @Date 12:54 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.hxkj.domain.po.FunctionLibraryTree>
     **/
    @RequestMapping(value = "/functionlibrary/getlisttreebykeyword", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    List<FunctionLibraryTree> getFunctionLibraryListTreeByKeyword(@RequestBody FunctionLibrary functionLibrary) throws Exception;

    /**
     * @author Mr.zheng
     * @Description getShowFunctionLibraryListTree 获取状态启用的功能树
     * @Date 12:54 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.hxkj.domain.po.FunctionLibraryTree>
     **/
    @RequestMapping(value = "/functionlibrary/getshowlisttree", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    List<FunctionLibraryTree> getShowFunctionLibraryListTree(@RequestBody FunctionLibrary functionLibrary) throws Exception;


    /**
     * @author Mr.zheng
     * @Description removeFunctionLibrary 删除功能
     * @Date 13:08 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.platform.common.domain.result.ResultMessageStruct>
     **/
    @RequestMapping(value = "/functionlibrary/remove", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    ResultMessageStruct removeFunctionLibrary(@RequestBody FunctionLibrary functionLibrary) throws Exception;


    /**
     * @author Mr.zheng
     * @Description getFunctionLibraryListTree 根据ID获取功能
     * @Date 12:54 2018/6/27
     * @Param [functionLibrary]
     * @return java.util.concurrent.Callable<com.hxkj.domain.po.FunctionLibraryTree>
     **/
    @RequestMapping(value = "/functionlibrary/functiontosite", method = RequestMethod.POST,consumes  ="application/json;charset=UTF-8")
    ResultMessageStruct functionToSite(@RequestBody FunctionLibrary functionLibrary) throws Exception;
}
